use std::collections::HashMap;

/// 类型别名管理
pub struct TypeAliasManager {
    /// 类型别名映射
    aliases: HashMap<String, String>,
}

impl TypeAliasManager {
    /// 创建新的类型别名管理器
    pub fn new() -> Self {
        TypeAliasManager {
            aliases: HashMap::new(),
        }
    }

    /// 添加类型别名
    pub fn add_alias(&mut self, alias: String, actual_type: String) {
        self.aliases.insert(alias, actual_type);
    }

    /// 获取实际类型
    pub fn get_actual_type(&self, alias: &str) -> String {
        self.aliases
            .get(alias)
            .cloned()
            .unwrap_or_else(|| alias.to_string())
    }

    /// 检查是否是类型别名
    pub fn is_alias(&self, name: &str) -> bool {
        self.aliases.contains_key(name)
    }

    /// 获取所有类型别名
    pub fn get_all_aliases(&self) -> &HashMap<String, String> {
        &self.aliases
    }
}
